package biz.datalk.industrialland.common.log.service;

import biz.datalk.industrialland.common.log.def.LogTypeEnum;
import biz.datalk.industrialland.common.log.def.OptEnum;
import biz.datalk.industrialland.common.log.def.OptResultEnum;
import biz.datalk.industrialland.common.log.pojo.bo.LogBO;

/**
 * @author tarofang@163.com
 * @date 2020-11-24
 */
public interface ISysLogService {

    /**
     * 由切面程序调用
     * 方法标注 @SysLog 注解
     *
     * 一般用于需要鉴权的接口（用户已登录）
     */
    void saveLogBo(LogBO logBO);

    /**
     * 由开发者调用
     *
     * 一般用户开放接口 （用户未登录）
     *
     * @param sysUserId 用户系统ID， 对应 sys_user.id
     * @param username 用户 username ， 对应 sys_user.username
     * @param logTypeEnum 日志类型 1-登录日志 2-操作日志
     * @param optEnum 操作编码 {@link biz.datalk.industrialland.common.log.def.OptEnum}
     * @param logContent 操作日志具体内容
     * @param opResult 操作结果
     * @param reqResult 请求结果
     * @param reqBodyPlaintext 请求体解密数据
     * @param costMillisecond 请求消耗时间
     *
     * @author tarofang@163.com
     * @date 2020年11月24日
     */
    void saveLog(Long sysUserId, String username, LogTypeEnum logTypeEnum, OptEnum optEnum, String logContent, OptResultEnum opResult, String reqResult, String reqBodyPlaintext, long costMillisecond);

    void saveLog(Long sysUserId, String username, LogTypeEnum logTypeEnum, OptEnum optEnum, String logContent, OptResultEnum opResult, String reqResult, String reqBodyPlaintext);
    void saveLog(LogTypeEnum logTypeEnum, OptEnum optEnum, String logContent, OptResultEnum opResult, String reqResult, String reqBodyPlaintext);

}
